package com.masterlu.leetcode.daily.linkedlist.simple;

import com.masterlu.leetcode.daily.linkedlist.ListNode;

/**
 * 反转链表
 * https://leetcode-cn.com/problems/reverse-linked-list/
 *
 * @Author：masterlu
 * @Date：2021/4/9 10:36 上午
 */
public class S206ReverseList {

    /**
     * 三个变量（1.记录当前节点，2.记录前继节点，3.记录后继节点）
     * 四步操作
     * 步骤：
     * 将当前节点后继节点暂存，
     * 将当前节点的后继指针指向前继节点，
     * 前继节点后移，
     * 当前节点后移
     * @param head
     * @return
     */
    public ListNode reverseList(ListNode head) {

        ListNode curr = head;
        ListNode prev = null;
        while (curr != null) {
            ListNode next = curr.next;
            curr.next = prev;
            prev = curr;
            curr = next;

        }

        return prev;
    }

}
